"use strict";
/*
 * @Author: Fan Dong
 * @Date: 2021-06-24 09:59:01
 * @LastEditors: Fan Dong
 * @LastEditTime: 2021-06-24 11:23:32
 * @Description: 文件描述
 * @FilePath: \learn-typescript\ts\2.函数.ts
 */
// es5 定义函数
// 函数声明式
// function run() {
//   return "run";
// }
// // 匿名函数
// let run3 = function () {
//   return "33";
// };
// ts定义函数的方法
// 函数声明式
function a1() {
    return "123";
}
// 错误写法
// function a2(): string{
//   return 123
// }
// 匿名函数
var fun2 = function () {
    return 456;
};
// ts定义方法传参
// 函数声明式
function getInfo(name, age) {
    return name + age;
}
console.log(getInfo("fred", 18));
// 匿名函数
var getInfo2 = function (name, age) {
    return name + age;
};
console.log(getInfo2("fred", 20));
// 没有返回值的方法
function rr() {
    console.log("没有返回值");
}
rr();
// 方法的可选参数
// es5里面方法的形参是实参可以不一样,但在ts中必须一样,如果不一样就需要配置可选参数
function getInfo3(name, age) {
    if (age) {
        return name + age;
    }
    else {
        return name;
    }
}
console.log(getInfo3("liming", 99));
// 默认参数
function getInfo4(name, age) {
    if (age === void 0) { age = 20; }
    return name + age;
}
console.log(getInfo4("fred"));
// 剩余参数
// function sum(a: number, b: number, c: number, d: number): number {
//   return a + b + c + d;
// }
// console.log(sum(1, 2, 3, 4));
// 三点运算法 接受新参数传过来的值
function sum2() {
    var result = [];
    for (var _i = 0; _i < arguments.length; _i++) {
        result[_i] = arguments[_i];
    }
    var sum = 0;
    for (var i = 0; i < result.length; i++) {
        sum += result[i];
    }
    return sum;
}
console.log(sum2(1, 2, 3, 4, 5, 6));
function sum3(a) {
    var result = [];
    for (var _i = 1; _i < arguments.length; _i++) {
        result[_i - 1] = arguments[_i];
    }
    var sum = a;
    for (var i = 0; i < result.length; i++) {
        sum += result[i];
    }
    return sum;
}
console.log(sum3(1, 2, 3, 4, 5, 6));
function getObj2(name, age) {
    if (age) {
        return "我叫" + name + "我的年龄是" + age;
    }
    else {
        return "我叫" + name;
    }
}
console.log(getObj2('张三'));
console.log(getObj2('张三', 18));
// console.log(getObj2(18)) // 错误
// console.log(getObj2('张三',true)) // 错误
// 箭头函数es6   this指向上下文
setTimeout(function () {
    console.log('run');
}, 1000);
setTimeout(function () {
    console.log('22');
}, 1000);
